<?php

session_start();
require_once('../helpers/recaptchalib.php');
require_once('../helpers/Helpers.php');
require_once("../helpers/Mensajes.php");
$publickey = "6LfGW9ISAAAAALlYMHdXNs2F3aLJLoR5pFsHuz7r";
$privatekey = "6LfGW9ISAAAAAE15GNz0HhiH9Ycc0D2gLnHWjGjc";
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
include_once("../modelo/ModeloEmpresa.php");
include_once("../modelo/ModeloUsuario.php");
include_once("../modelo/ModeloHV.php");


$usulogin = $_POST['usulogin'];
$loginusupasswd = $_POST['loginusupasswd'];
$usucorreo = $_POST['usucorreo'];
$usutelefono1 = $_POST['usutelefono1'];

$opcion = $_POST['opcion'];
$respuesta = "false";


if (isset($_POST['opcion'])) {
    $opcion = $_POST['opcion'];
    if ($opcion == 'login') {
        //DESCOMENTAR PARA INGRESO CON CAPCHA
        $re_ip = $_SERVER["REMOTE_ADDR"];
        $re_challenge = $_POST["recaptcha_challenge_field"];
        $re_response = $_POST["recaptcha_response_field"];
        $re_valid = recaptcha_check_answer($privatekey, $re_ip, $re_challenge, $re_response);
        if ($re_valid->is_valid) {
        $loginusupasswd = md5($loginusupasswd);
        $respuesta = ControlUsuario::validarUsuario($usulogin, $loginusupasswd);
        if ($respuesta == "false") {
            header("location: ../index.php?lg=$usulogin");
        } else {
            $fechaVencimientoPasswd = $_SESSION['usupasswdfechaven'];
            $fecha_actual = strtotime(date("Y-m-d H:i:00", time()));
            $fechaVencimientoPasswd = strtotime("$fechaVencimientoPasswd");
            if ($fecha_actual > $fechaVencimientoPasswd) {
                header("location: ../vista/GestionarContrasenas.php?op=vencida");
            } else {
                header("location: ../vista/Index.php");
            }
        }
        } else {
            $error = $resp->error;
            header("location: ../index.php?lg=$usulogin");
        }
    } else if ($opcion == 'registrarempresa') {
        $grucodsx = 3;
        $usulogin = $_POST['usulogin'];
        $usupasswd = $_POST['usupasswd'];
        $usupasswd = md5($usupasswd);
        $usutelefono1 = $_POST['usutelefono1'];
        $emprazonsocial = $_POST['emprazonsocial'];
        $usucorreo = $_POST['usucorreo'];
        $usupasswdfechaven = $_POST['usupasswdfechaven'];

        $mEmpresaTemp = new ModeloEmpresa();
        $mUsuario = new ModeloUsuario(null, null, $grucodsx, null, null, null, null, null, null, null, $usutelefono1, null, null, null, $usucorreo, $usulogin, $usupasswd, $usupasswdfechaven, null, 1, null, null, null);

        $razonSocialBD = $mEmpresaTemp->getEmpresaByRazonSocial($emprazonsocial);

        $usuario = $mUsuario->getUsuarioByLogin($usulogin);
        if ($usuario[0]->usucodsx == "" && $razonSocialBD[0]->emprazonsocial == "") {
            $arUsuario = $mUsuario->getUsuarioByLogin($usulogin);
            $usucodsx = $arUsuario[0]->usucodsx;
            $mUsuario->crearUsuario();
            $arUsuario = $mUsuario->getUsuarioByLogin($usulogin);
            $usucodsx = $arUsuario[0]->usucodsx;
            $mEmpresa = new ModeloEmpresa(null, null, $usucodsx, null, null, $emprazonsocial, null, null, null, null, null, null, 0, null, 1, null, null, null);
            $mEmpresa->crearEmpresa();
            $arEmpresa = $mUsuario->buscarEmpresaByUsuario($usucodsx);
            $empcodsx = $arEmpresa[0]->empcodsx;
            $_SESSION['empcodsx '] = $empcodsx;
            $_SESSION['grupo'] = $grucodsx;
            $_SESSION['usuario'] = $usulogin;
            $_SESSION['usucodsx'] = $usucodsx;
            header("location: ../vista/Index.php");
            echo 'ok*|*Creado Con Exito';
        } else if ($usuario[0]->usucodsx != "") {
            header("location: ../index.php?mensaje-error=Login ya existe");
        } else if ($razonSocialBD[0]->emprazonsocial != "") {
            header("location: ../index.php?mensaje-error=Razon Social ya existe");
        }
    } else if ($opcion == 'recuperarcontrasena') {
        $usucorreo = $_POST['usucorreo'];
        $mUsuario = new ModeloUsuario();
        $usuario = $mUsuario->getUsuarioByCorreo($usucorreo);
        $nuevopasswd = ControlUsuario::texto_aleatorio('8', true, true, true);
        $nuevopasswdmd5 = md5($nuevopasswd);
        $fecha_actual = strtotime(date("Y-m-d H:i:00", time()));
        if ($usuario[0]->usucorreo != "") {
            enviarCorreoContrasena($usucorreo, $nuevopasswd, $usuario[0]->usulogin);
            $mUsuario->actualizarFechaVenPasswd($usuario[0]->usucodsx, $fecha_actual);
            $mUsuario->actualizarPasswd($usuario[0]->usucodsx, $nuevopasswdmd5);
            header("location: ../index.php");
            $mensaje = new Mensajes('Mensaje Enviado correctamente', null, null);
            $_SESSION['mensaje'] = $mensaje;
        } else {
            header("location: ../vista/VistaRecuperarContrasena.php");
            $mensaje = new Mensajes(null, 'El correo ' . $usucorreo . ' no esta registrado', null);
            $_SESSION['mensaje'] = $mensaje;
        }
    } else if ($opcion == 'actualizar') {
        $usucodsx = $_POST['usucodsx'];
        $tipodicodsx = $_POST['tipodicodsx'];
        $provinciacodsx = $_POST['provinciacodsx'];
        $usudi = $_POST['usudi'];
        $usunombre = $_POST['usunombre'];
        $usuapellido = $_POST['usuapellido'];
        $ususexo = $_POST['ususexo'];
        $usufechanacimiento = $_POST['usufechanacimiento'];
        $usutelefono1 = $_POST['usutelefono1'];
        $usutelefono2 = $_POST['usutelefono2'];
        $usudireccion = $_POST['usudireccion'];
        $usuciudad = $_POST['usuciudad'];
        $usucorreo = $_POST['usucorreo'];
        $usufoto = $_POST['usufoto'];
        $code = $usudi . "fotoUsuario";


        $uploaddir = "../archivos/fotosUsuarios/";
        $uploadfilename = strtolower(str_replace(" ", "_", basename($_FILES['usufoto']['name'])));
        $nombref = $code . ".jpg";
        $foto = $uploaddir . $nombref;
        $error = $_FILES['usufoto']['error'];
        $subido = false;
        $mUsuario = new ModeloUsuario($usucodsx, null, null, $tipodicodsx, $provinciacodsx, $usudi, $usunombre, $usuapellido, $ususexo, $usufechanacimiento, $usutelefono1, $usutelefono2, $usudireccion, $usuciudad, $usucorreo, null, null, null, $foto, null);

        if (isset($_POST['enviar']) && $error == UPLOAD_ERR_OK) {
            if ($_FILES['usufoto']['type'] != "image/jpeg" || $_FILES['usufoto']['size'] > 204800) {
                $error = "Comprueba que el archivo sea una imagen en formato jpeg y de tamano inferior a 200Kb.";
            } else if (preg_match("/[^0-9a-zA-Z_.-]/", $nombref)) {
                $error = "El nombre del archivo contiene caracteres no validos.";
            } else {
                $mUsuario->actualizarUsuario();
                $subido = copy($_FILES['usufoto']['tmp_name'], $foto);
            }
        }
        if ($subido) {
            header("location: ../vista/DatosPersonales.php?op=modificar&id=$usucodsx&mensaje=Datos Actualizados con Exito");
            //echo "ok*|*Datos Actualizados";
        } else {
            header("location: ../vista/DatosPersonales.php?op=modificar&id=$usucodsx&mensaje-error=$error");
        }
    } else if ($opcion == 'datospersonaleshv') {
        $usucodsx = $_POST['usucodsx'];
        $tipodicodsx = $_POST['tipodicodsx'];
        $provinciacodsx = $_POST['provinciacodsx'];
        $usudi = $_POST['usudi'];
        $usunombre = $_POST['usunombre'];
        $usuapellido = $_POST['usuapellido'];
        $ususexo = $_POST['ususexo'];
        $usufechanacimiento = $_POST['usufechanacimiento'];
        $usutelefono1 = $_POST['usutelefono1'];
        $usutelefono2 = $_POST['usutelefono2'];
        $usudireccion = $_POST['usudireccion'];
        $usuciudad = $_POST['usuciudad'];
        $usucorreo = $_POST['usucorreo'];
        $usufoto = $_POST['usufoto'];
        $code = $usudi . "fotoUsuario";

        $uploaddir = "../archivos/fotosUsuarios/";
        $uploadfilename = strtolower(str_replace(" ", "_", basename($_FILES['usufoto']['name'])));
        $nombref = $code . ".jpg";
        $foto = $uploaddir . $nombref;
        $error = $_FILES['usufoto']['error'];
        $mensajeerror = "Seleccione la foto";
        $subido = false;
        $mUsuario = new ModeloUsuario($usucodsx, null, null, $tipodicodsx, $provinciacodsx, $usudi, $usunombre, $usuapellido, $ususexo, $usufechanacimiento, $usutelefono1, $usutelefono2, $usudireccion, $usuciudad, $usucorreo, null, null, null, $foto, null);

        if (isset($_POST['enviardatospersonales']) && $error == UPLOAD_ERR_OK) {
            if ($_FILES['usufoto']['type'] != "image/jpeg" || $_FILES['usufoto']['size'] > 204800) {
                $error = "Comprueba que el archivo sea una imagen en formato jpeg y de tamano inferior a 200Kb.";
                $mensajeerror = $error;
            } else if (preg_match("/[^0-9a-zA-Z_.-]/", $nombref)) {
                $error = "El nombre del archivo contiene caracteres no validos.";
                $mensajeerror = $error;
            } else {
                $mensajeerror = "";
                $mUsuario->actualizarUsuario();
                $subido = copy($_FILES['usufoto']['tmp_name'], $foto);
            }
        }
        if ($subido) {
            header("location: ../vista/HV.php?op=gestionar");
            $mensaje = new Mensajes('Datos personales actualizados correctamente', null, null);
            $_SESSION['mensaje'] = $mensaje;
            // echo "ok*|*Datos Actualizados";
        } else {
//            echo "false*|*".$error;
            //  header("location: ../vista/RegistrarEmpresa.php?op=registrar&mensaje-error=$error");
            //$_SESSION['empresa'] = $mEmpresa;
            header("location: ../vista/HV.php?op=gestionar");
            $mensaje = new Mensajes(null, $mensajeerror, null);
            $_SESSION['mensaje'] = $mensaje;
        }
    }
}

class ControlUsuario {

    public static function validarUsuario($usulogin, $usupaswd) {
        $ok = "false";
        $mUsuario = new ModeloUsuario();
        $arUsuarios = $mUsuario->buscarUsuarioBy($usulogin, $usupaswd);
        if (isset($arUsuarios[0]->usucodsx)) {
            $_SESSION['usuario'] = $arUsuarios[0]->usulogin;
            $_SESSION['grupo'] = $arUsuarios[0]->grucodsx;
            $_SESSION['usucodsx'] = $arUsuarios[0]->usucodsx;
            $_SESSION['usupasswdfechaven'] = $arUsuarios[0]->usupasswdfechaven;
            $ok = "true";
            if ($arUsuarios[0]->grucodsx == 3 || $arUsuarios[0]->grucodsx == 2) {
                $arEmpresa = $mUsuario->buscarEmpresaByUsuario($_SESSION['usucodsx']);
                $empcodsx = $arEmpresa[0]->empcodsx;
                $_SESSION['empcodsx'] = $empcodsx;
                echo $empcodsx;
            }else if($arUsuarios[0]->grucodsx == 4 ){
                $mHV = new ModeloHV();
                $oHV= $mHV->getHVByUsuario($arUsuarios[0]->usucodsx);
                $_SESSION['hvcodsx'] = $oHV[0]->hvcodsx;
            }
        }
        return $ok;
    }

    public static function getUsuario($usucodsx) {
        $mUsuario = new ModeloUsuario();
        $arUsuarios = $mUsuario->getUsuarioById($usucodsx);
        $_SESSION['arUsuarios'] = $arUsuarios;
    }

    public static function buscarUsuario($usulogin) {
        $mUsuario = new ModeloUsuario();
        $arUsuarios = $mUsuario->getUsuarioByLogin($usulogin);
        $_SESSION['arUsuarios'] = $arUsuarios;
        return $arUsuarios[0]->usucodsx;
    }

    /**
     * function texto_aleatorio (integer $long = 5, boolean $lestras_min = true, boolean $letras_max = true, boolean $num = true))
     *
     * Permite generar contrasenhas de manera aleatoria.
     *
     * @$long: Especifica la longitud de la contrasenha
     * @$letras_min: Podra usar letas en minusculas
     * @$letras_max: Podra usar letas en mayusculas
     * @$num: Podra usar numeros
     *
     * return string
     */
    public static function texto_aleatorio($long, $letras_min, $letras_max, $num) {
        $salt = $letras_min ? 'abchefghknpqrstuvwxyz' : '';
        $salt .= $letras_max ? 'ACDEFHKNPRSTUVWXYZ' : '';
        $salt .= $num ? (strlen($salt) ? '2345679' : '0123456789') : '';

        if (strlen($salt) == 0) {
            return '';
        }

        $i = 0;
        $str = '';

        srand((double) microtime() * 1000000);

        while ($i < $long) {
            $num = rand(0, strlen($salt) - 1);
            $str .= substr($salt, $num, 1);
            $i++;
        }
        return $str;
    }

}

?>
